
#include "Clash.h"
#include "Aqua.h"
#include "Bolt.h"
#include "Lahan.h"
#include "player.h"
#include <iostream>

using namespace std;

Clash::Clash()
{
    SetX(2); //inisiasi lokasi x
    SetY(2); //inisiasi lokasi y
    SetChase(2,2); //inisiasi lokasi tanaman yang menjadi target
    SetTarget(0); //inisasi perintah kurcaci mengejar tanaman
    Sleep(); //menidurkan kurcaci
}

Clash::Clash(const Clash& Ax)
{
    Position NewP = Ax.GetChase();

    SetX(Ax.GetX());
    SetY(Ax.GetY());
    SetChase(NewP.x,NewP.y);
    if (Ax.IsTargetting())
    {  SetTarget(1);}
    else {SetTarget(0);}

    if(Ax.IsWakeUp())
    {WakeUp();}
    else {Sleep();}

}

Clash::~Clash()
{}


void Clash::HomingTanaman()
{
    boolean IsGet = false;
    int i,j;

    i = -1;
    j = -1;

    while((i<= 1) && (IsGet == false ) )
    {
        j = -1;
        while((j <= 1) && (IsGet == false ) )
        {
            if(L.getStatus(GetX()+i,GetY()+j)== 8)
            { SetChase(GetX()+i,GetY()+j); //menyimpan posisi tanaman tersebut di variabel Chase
            SetTarget(1); //memerintahkan kurcaci untuk mengejar tanaman
            IsGet = true;}
            else j++;
        }
		i++;
    }


}

boolean Clash::IsSafeToWalk(int Ax, int Ay)
{
    int stats;
    Position pemain;

    stats = (L.getStatus(Ax,Ay)); //mengambil posisi lahan
    pemain = (P.GetPosition()); //mengambil posisi pemain
    //mengambil kurcaci lain? setelah ini ditambahkan
    if ( 
            (stats == 5) || (stats == 6) || (stats == 7) || (stats == 8) ||// lahan tak memungkinkan untuk diakses
            (pemain.x == Ax && pemain.y == Ay) /* memeriksa posisi pemain*/|| (B.GetX() == Ax && B.GetY() == Ay) || (A.GetX() == Ax && A.GetY() == Ay)
            ||(Ax>8)||(Ax<0)//keluar dari batas x
            ||(Ay>8)||(Ay<0)//keluar dari batas y
            ||((Ay == 0) &&(Ax == 8 ) )//menginjak kotak penjualan
            )
    {return false;}
    else
        return true;

}

void Clash::ActKurcaci()
{
    //Dieksekusi jika kondisi sudah memenuhi (target sesuai dengan kriteria, ada di sebelah tanaman)
    Position NewP = GetChase();
    L.deleteTanaman(NewP.x,NewP.y); //men"delete" tanaman di posisi Chase tersebut
    SetTarget(0);
     HomingTanaman(); //Mencari tanaman yang bisa dipotong yang ada di dekatnya dahulu.
}

